package com.jyw.common.core.page;

import com.jyw.common.constant.HttpStatus;
import com.jyw.common.core.domain.model.CacheVersion;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

/**
 * 表格分页数据对象
 * 
 * @author system
 */
@Data
@ApiModel("表格分页数据对象")
public class TableDataInfo<T> implements Serializable
{
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("分页数据")
    private PageData<T> data;

    /** 消息状态码 */
    @ApiModelProperty("消息状态码")
    private int code;

    /** 消息内容 */
    @ApiModelProperty("消息内容")
    private String msg;

    @ApiModelProperty("缓存版本")
    private CacheVersion version;

    /**
     * 表格数据对象
     */
    public TableDataInfo()
    {
    }

    /**
     * 分页
     * 
     * @param list 列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<T> list, int total)
    {
        setData(new PageData<>(total,list));
    }

    /**
     *
     * @param list
     * @param total
     * @return
     * @param <T>
     */
    public static <T> TableDataInfo<T> build(List<T> list,long total) {
        TableDataInfo<T> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setMsg("查询成功");
        rspData.setData(new PageData<>(total,list));
        return rspData;
    }

    /**
     *
     * @return
     * @param <T>
     */
    public static <T> TableDataInfo<T> build() {
        TableDataInfo<T> rspData = new TableDataInfo<>();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setMsg("查询成功");
        rspData.setData(new PageData<>(0, Collections.emptyList()));
        return rspData;
    }

}
